#pragma once
#ifndef AFFECTSBIP_H
#define AFFECTSBIP_H
#include "spa_types.h"
#include <set>
#include <vector>

class AffectsBIP{
private:
	BOOLEAN FindAffectedHelper(PROG_LINE,VARINDEX);
public:
	AffectsBIP();
	~AffectsBIP();
	BOOLEAN GetAffectsBIP(STMT, STMT);
	BOOLEAN GetTransitiveAffectsBIP(STMT, STMT);
	STMT_ARRAY RetrieveAffectedAssignmentBIP(STMT);
	STMT_ARRAY RetrieveAffectingAssignmentBIP(STMT);
	STMT_ARRAY RetrieveTransitiveAffectedAssignmentBIP(STMT);
	STMT_ARRAY RetrieveTransitiveAffectingAssignmentBIP(STMT);
	STMT_ARRAY HelperGetTransitiveBIP(set<STMT>,int);
	STMT_ARRAY VectorToSet(vector<STMT>);
};
#endif